Channel hopping based on channel performance statistics

ABSTRACT

A method of generating a channel hopping sequence for a link in a wireless sensor network includes receiving performance quality data for respective frequency channels of frequency channels in the link in a monitoring system, determining a channel quality indicator (CQI) by the monitoring system for each frequency channel based on the respective performance quality data, and determining a repetition factor by the monitoring system for each frequency channel based on the respective CQI. A repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in the channel hopping sequence.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 16/137,456 filed Sep. 20, 2018, issued as U.S. Pat. No. 10,659,100 on May 19, 2020, which claims priority to U.S. Provisional Patent Application No. 62/561,710 filed Sep. 22, 2017, the entireties of which are incorporated herein by reference.

BACKGROUND

The radio environment in a wireless sensor network is time varying and difficult to predict which increases the risk of depending on a single frequency channel for communication, especially in a harsh industrial environment. For this reason, standard protocols used in the Industrial Internet of Things (IIoT), e.g., WirelessHART and IEEE 802.15.4-2015 timeslotted channel hopping (TSCH), employ channel hopping across different radio frequency channels to mitigate the effects of communication impairments such as narrow band interference and multipath fading.

Generally, channel hopping relies on time synchronization to ensure that a transmitting node and the receiving node operate on the same frequency channel. One variant of channel hopping that is commonly used relies on blacklisting of unreliable channels based on node statistics. In this variant, channel hopping is performed using the non-blacklisted channels, referred to as the whitelist.

SUMMARY

Embodiments relate to methods and apparatus for channel hopping based on channel statistics. In one aspect, a method of generating a channel hopping sequence for a link in a wireless sensor network is provided that includes receiving performance quality data for respective frequency channels in the link in a monitoring system, determining a channel quality indicator (CQI) by the monitoring system for each frequency channel based on the respective performance quality data, and determining a repetition factor by the monitoring system for each frequency channel based on the respective CQI. A repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in the channel hopping sequence.

In one aspect, a method of generating a channel hopping sequence for a link of a wireless communication device in a wireless sensor network is provided that includes receiving repetition factors for respective frequency channels in the link, determining a set of frequency channels for generation of the channel hopping sequence based on the repetition factors, and generating the channel hopping sequence using the set of frequency channels. A repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in the channel hopping sequence.

In one aspect, a wireless communication device in a wireless sensor network is provided that includes a memory to store software instructions for generating a channel hopping sequence of a link of the wireless communication device that, when executed by a processor, cause the wireless communication device to receive repetition factors for respective frequency channels of the link, determine a set of frequency channels for generation of the channel hopping sequence based on the repetition factors, and generate the channel hopping sequence using the set of frequency channels, and the processor coupled to the memory to execute the software instructions. A repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in the channel hopping sequence.

In one aspect, a monitoring system is provided that includes a memory to store software instructions that, when executed by a processor, cause the monitoring system to receive performance quality data for respective frequency channels of frequency channel in a link in a wireless sensor network, determine a channel quality indicator (CQI) for each frequency channel based on the respective performance data, and determine a repetition factor for each frequency channel based on the respective CQI. A repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence for the link. The processor is coupled to the memory and configured to execute the software instructions.

In one aspect, a network includes a wireless sensor network. Nodes in the wireless sensor network operate according to a channel hopping sequence. A monitoring system is coupled to the wireless sensor network and configured to receive performance quality data for respective frequency channels in a link of a node, determine a channel quality indicator (CQI) for each frequency channel of based on the respective performance quality data, and determine a repetition factor for each frequency channel based on the respective CQI. A repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence for the link used by the node.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simple example of a network including an industrial wireless sensor network (WSN) coupled to a monitoring system via a gateway.

FIG. 2 is a flow diagram of a method for real-time determination of a channel hopping sequence for the WSN of FIG. 1 based on channel performance statistics.

FIG. 3 is a flow diagram illustrating the generation of a channel hopping sequence as defined in IEEE 802.15.4-2015.

FIG. 4 is an example illustrating portions of the method of FIG. 2.

FIG. 5 is a simplified block diagram of an example wireless sensor device.

FIG. 6 is a simplified block diagram of a computer system.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Like elements in the various figures are denoted by like reference numerals for consistency.

Embodiments provide for channel hopping over links in a wireless sensor network (WSN) based on performance statistics of the frequency channels used by the links. In some embodiments, real-time generation of a whitelist of channels for links in a WSN based on channel performance statistics of channels used in each link is provided, which also provides a blacklist of channels with unacceptable performance. In some embodiments, real-time formation of the channel hopping sequence for a link using the respective whitelist is provided.

Embodiments are explained herein in reference to “IEEE Standard for Low-Rate Wireless Personal Area Networks (WPANs),” The Institute of Electrical and Electronics Engineers, Inc., New York, N.Y., Apr. 22, 2016, which is incorporated by reference and referred to as “IEEE 802.15.4-2015” herein. Further, embodiments are based on timeslotted channel hopping (TSCH) as described in IEEE 802.15.4-2015. However, the concepts described herein are applicable to other time synchronized protocols such as, for example, WirelessHART, a wireless networking technology standard developed by the HART Communication Foundation, ISA 100.11a, a wireless networking technology standard developed by the International Society of Automation, and Bluetooth Low Energy.

FIG. 1 is a simple example of a network 100 including an industrial wireless sensor network (WSN) 104 coupled to a monitoring system 106 via a gateway 102. The example WSN 104 is arranged in a convergecast topology and includes a coordinator node 105 and nine nodes 108-122 coupled to the coordinator node 105. In a convergecast topology, packets from nodes are upwardly routed via respective parent nodes, if any, to the coordinator node. For example, the child node 118 transmits packets to the respective parent node 112 via link 142, which in turn forwards the packets from the child node 118 to the coordinator node 105.

A node 105-122 may be, for example, a control device such as a lock or a sensing device such as a smoke alarm or door sensor in an alarm system or may be both a control device and a sensing device such as a thermostat. In an industrial environment, example nodes include nodes used for temperature measurement, vibration monitoring, humidity monitoring, predictive maintenance, etc. The monitoring system 106 such as, for example, a server or other computer system, communicates with the coordinator node 105 in the WSN 104 via the gateway 102 to receive information from the nodes 108-122, e.g., sensor data and performance data, and to send information, e.g., control data, to the nodes 108-122. The link between the gateway 102 and the monitoring system 106 and between the coordinator node 105 and the gateway 102 can be wired or wireless.

Each of the nodes 105-122 includes a TSCH medium access (MAC) layer as defined in IEEE 802.15.4-2015. In a TSCH network, time is divided into slots for communication, and all intermediate and leaf nodes are time-synchronized to the root node. The time slots are grouped in slot frames and a TSCH schedule managed by another network layer instructs each node as to what the node should do in a given time slot: transmit, receive, or sleep. The schedule is a logical two-dimensional matrix with one dimension determining the slot offset in the slot frame and the other dimension designating the channel offset in the available frequency band. The width of the schedule is equal to the slot frame width and the depth is equal to the number of available frequency channels in the allotted band.

Further, a TSCH network uses channel hopping in which a particular MAC layer channel offset at the same time slot over successive slot frames in the schedule translates into a different frequency (or physical channel) at each iteration of the slot frame. The result is that successive packets exchanged over links between neighbor nodes are communicated at different frequencies. As is explained in more detail in reference to the method of FIG. 2, the monitoring system 106 determines the good channels in the links 130-146, i.e., the whitelists of channels with acceptable performance, that are used by the nodes 105-122 to generate the channel hopping sequences for respective links 130-146.

As is explained in more detail in reference to the method of FIG. 2, each node 105-122 generates a channel hopping sequence for each link to a neighbor node using a whitelist of channels determined by the monitoring system 106 based on channel performance data for the link provided to the monitoring system 106 by the node. For example, the intermediate node 112 has four links, the link 142 to the child node 118, the link 144 to the child node 120, the link 146 to the child node 122, and the link 132 to the coordinator node 105. The intermediate node 112 provides channel performance data for each of these links to the monitoring system 106, receives a channel whitelist from the monitoring system 106 for each link, and uses each whitelist to generate a channel hopping sequence for the respective link. Each of the neighbor nodes 105, 118, 120, 122 also provide channel performance data to the monitoring system 106 for the respective link 132, 142, 144, 146 to the intermediate node 112, receive a channel whitelist from the monitoring system 106 for the respective link, and use the whitelist to generate a channel hopping sequence for the link.

FIG. 2 is a flow diagram of a method for real-time determination of a channel hopping sequence for a link 130-146 in the WSN 104 (FIG. 1) based on performance statistics of channels in the link used by a respective node 105-122. The method assumes that there are K frequency channels in the channel hopping sequences used in the WSN 104. For example, if the nodes 105-122 are communicating over respective links 130-146 using the 2.4 GHz band, K≤16. Initially, the monitoring system 106 receives 200 data representative of the performance quality of each frequency channel in use in the link and determines 202 a channel quality indicator (CQI) for each frequency channel used in the link based on the respective performance quality data. A CQI is a measure of the performance of each frequency channel, and can be, for example, channel impulse response, signal-to-noise ratio (SNR), packet error rate (PER), or bit error rate (BER).

The performance quality data needed to determine the CQIs can be collected either actively or passively by the nodes 105-122 in the WSN 104 and communicated to the monitoring system 106. For example, for active collection of PERs in the WSN 104, each node 105-122 in the WSN 104 can track the total number of attempted transmissions of packets per channel in respective links and the total number of successful transmissions of packets per channel during a specified performance data collection time interval. At the end of the time interval, the nodes 108-122 can compute the PER for each channel in respective links from the transmission statistics and send the PERs to the gateway 102 using an application packet. The gateway 102 can then communicate the PERs to the monitoring system 106. Note that a node can have links to one or more neighbor nodes and provides PERs for each link.

For passive collection of PERs in the WSN 104, node level PER computation is not needed. Because the WSN 104 is centrally controlled and follows a predetermined schedule, the gateway 102 can have complete knowledge of the packet transmission schedule for each node 108-122 including the channels used in respective links and the success or failure of each transmission. Based on the statistics of the packets successfully received by the coordinator node 105 over each channel from the nodes during a specified performance collection time interval, the gateway 102 can compute an estimate of the PER for each channel and communicate the PERs to the monitoring system 106.

For CQI candidates such as SNR, BER, and other metrics such as channel impulse response, passive data collection may not be feasible. For example, for active collection of SNRs for the frequency channels used in respective links, each node 105-122 can compute the average SNR per channel of each respective link over the specified performance data collection time interval and send the SNRs to the monitoring system 106.

Referring again to FIG. 2, the monitoring system 106 then sorts 204 the CQIs of the K frequency channels into a vector in descending order of CQI value where CQI_(sort)[0], CQI_(sort)[K−1] where CQI_(sort)[0] is the frequency channel with the best performance quality. For example, if the CQIs are ones in which larger values indicate better performance quality, e.g., SNR or channel impulse response, CQI_(sort)[0] is the largest value and CQI_(sort)[K−1] is the smallest value. If the CQIs are ones in which smaller values indicate better performance quality, e.g., BER or PER, each CQI[K] is converted to 1-CQI[K] so that larger values indicate better performance quality. A vector of the channel indices for respective CQIs in the sorted CQI vector is also generated as per ChannelIndices=[k₀ k₁ . . . k_(K-1)], where CQI_(sort)[0]=CQI[k₀], . . . , CQI_(sort)[K−1]=CQI[k_(K-1)].

The monitoring system 106 then normalizes 204 the CQIs in the sorted CQI vector by the best CQI value. Because the vector is sorted in descending order of performance quality, CQI_(sort)[0] is the best CQI value. Thus, the normalization of each CQI_(sort)[k] is given by CQI_(norm)[k]=CQI_(sort)[k]/CQI_(sort)[0].

The monitoring system 106 then determines 206 an initial repetition factor for each frequency channel based on the normalized CQI values. The initial repetition factor indicates how many times a frequency channel is to be included in the channel hopping sequence. The repetition factor for a channel k is computed as per

${R_{f}(k)} = {{{floor}\left( \frac{K \times {{CQI}_{norm}\lbrack k\rbrack}}{\Sigma_{j}{{CQI}_{norm}\lbrack j\rbrack}} \right)}.}$ Due to the flooring operation, Σ_(j)R_(f)(j)≤K.

The monitoring system 106 then determines 208 final repetition factors R_(f) ^(Final)(k) for the frequency channels such that Σ_(j)R_(f) ^(Final)(j)=K. The final repetition factors for the frequency channels are determined as per the pseudo code of Table 1. To compute the final repetition factors, the pseudo code iterates through the repetition factors, incrementing each by one until the summation of all the repetition factors is equal to K. Note that if the summation of the initial repetition factors is equal to K, the initial repetition factors become the final repetition factors with no change. Any frequency channel having a non-zero final repetition factor is included in the whitelist and any frequency channel having a zero final repetition factor is included in the blacklist.

TABLE 1 R_(f) ^(Final)(k) = R_(f)(k) k = 0 while (Σ_(j) R_(f) ^(Final) (j) < K) R_(f) ^(Final)(k) = R_(f) ^(Final)(k) + 1 k = k + 1 if (k == K) k = 0

The monitoring system 106 then transmits 209 the final repetition factors to the node that provided the performance data for the link. The receiving node needs to know which repetition factor corresponds to which channel in order to generate the channel hopping sequence for the link. In some embodiments, the monitoring system 106 transmits the final repetition factors in ascending channel number order so that the node can associate each repetition factor with the correct channel. In other embodiments, other techniques for communicating the channel information for each repetition factor can be used. The ChannelIndices vector is used to arrange the final repetition factors in ascending channel number order.

The node then determines 210 the set of frequency channels to be used to determine the final channel hopping sequence based on the final repetition factors. The final repetition factor for a frequency channel determines how many times the frequency channel is repeated in the set of channel indices use to generate the channel hopping sequence.

The node then generates 212 the final channel hopping sequence based on the set of channels and the algorithm for generating the channel hopping sequence defined by IEEE 802.15.4-2015. FIG. 3 is a flow diagram illustrating the generation of the final channel hopping sequence as defined in IEEE 802.15.4-2015. In this flow diagram, CHANNELS is the set of channels, macHoppingSequenceLength=K, and SHUFFLE is a vector of length macHoppingSequenceLength, the contents of which are equivalent to the first macHoppingSequenceLength outputs of a 9-bit linear feedback shift register (LFSR) with polynomial x9+x5+1 and a starting seed of 255. Each LFSR output is modulo macHoppingSequenceLength so that each entry of SHUFFLE is between 0 and (macHoppingSequenceLength−1) inclusive. Note that the channel hopping sequence generated as per the flow diagram is a random reordering of the channel list which increases the probability that the same channel is not used for two successive transmissions. Thus, the repetition factors indicate how many times a channel is repeated in the set of channels and how many times a channel is repeated in the channel hopping sequence.

The method of FIG. 2 is illustrated assuming K=16 and assuming that the CQI for each channel is the channel impulse response. The channel responses for each of the 16 frequency channels of the link are shown in FIG. 4. The sorting and normalization of the channel responses for the 16 frequency channels in descending order of performance quality results in CQI_(sort)=[1.00 0.96 0.58 0.52 0.46 0.46 0.44 0.40 0.38 0.32 0.27 0.24 0.07 0.05 0.04 0.02]. Note that CQI_(sort)[0]=1.00 so CQI_(norm)[k]=CQI_(sort)[k]. The vector of channel indices ChannelIndices for respective entries in CQI_(sort) is [8 7 1 0 2 5 6 4 15 10 3 11 14 9 13 12].

An initial repetition factor is determined for each frequency channel as previously described, resulting in the following vector of initial repetition factors: [2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0]. Final repetition factors are generated as previously described, resulting in the following vector of final repetition factors: [3 3 2 2 2 2 1 1 0 0 0 0 0 0 0 0]. Each entry in this vector indicates how many times the respective channel index in the vector of channel indices is to be repeated in the set of channels for generating the channel hopping sequence. The repetition factors are then sorted as per the ChannelIndices vector into ascending channel number order and transmitted to the node in ascending channel order, i.e., [2 2 2 0 1 2 1 3 3 0 0 0 0 0 0 0]. The set of channels to be used to generate the channel hopping sequence is then generated using the repetition factors: [0 0 1 1 2 2 4 5 5 6 7 7 7 8 8 8].

FIG. 5 is a simplified block diagram of an example wireless sensor device 500, e.g., a wireless communication device, that can be deployed as a node 105-122 in the example wireless network 104 of FIG. 1. More specifically, the example wireless sensor device 500 is a wireless microcontroller (MCU) as described in “CC2650 SimpleLink™ Multistandard Wireless MCU,” SWRS158B, Texas Instruments, Inc., January 2015, revised July 2016, which is incorporated by reference herein.

The MCU 500 incorporates a main CPU 502 for executing applications and protocol software that is implemented as a 32-bit ARM® Cortex®-M3 processor. General peripherals/modules 508 on the MCU 500 include a 12-bit A/D converter, interfaces for SPI, Microwire, and UART protocols, internal direct memory access (DMA), a real-time clock, multiple 32-bit timers, and more. The sensor interface 506 incorporates a programmable sensor controller and peripherals for interfacing with analog or digital sensors.

The MCU 500 also incorporates a radio frequency (RF) core 504 that implements a 2.4 GHz RF transceiver compatible with multiple protocols including the Bluetooth 5 low energy protocol and the IEEE 802.15.4 protocol. The RF core 204 is designed to autonomously handle time critical aspects of transmitting and receiving various radio protocols. The RF core 504 includes a processor implemented as an ARM® Cortex®-M0 processor for executing software that, e.g., interfaces the analog RF and base-band circuitry, handles data transmission to and from the main CPU 502, and assembles packets for transmission based on the protocol in use.

The MCU 500 also incorporates flash memory 510 that provides nonvolatile storage for code and data, static random access memory (SRAM) 512 that can be used for both storage of data and execution of code, and a read-only memory (ROM) 514 storing a real-time operating system kernel. Software instructions for the portions of the method of FIG. 2 performed by a node can be stored in a computer readable medium on the MCU 500 such as the flash memory 510, the SRAM 512, or the ROM 514 and executed by the main processor 502.

FIG. 6 is a simplified block diagram of a computer system 600 that may be used as the monitoring system 106 in the network 100 of FIG. 1. The computer system 600 includes a processing unit 602 equipped with one or more input devices 604 (e.g., a mouse, a keyboard, or the like), and one or more output devices, such as a display 606. In some embodiments, the display 606 may be a touch screen, thus allowing the display 606 to also function as an input device. The processing unit 602 can be, for example, a server, a desktop computer, a workstation, a laptop computer, a dedicated unit customized for a particular application, or the like. The display 606 may be any suitable visual display unit such as, for example, a computer monitor, an LED, LCD, or plasma display, a television, or a high definition television.

The processing unit 602 includes a central processing unit (CPU) 608, memory 612, a storage device 614, a video adapter 612, an I/O interface 610, and a network interface 624 connected to a bus. The bus may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, video bus, etc.

The CPU 608 may be any type of processor. For example, the CPU 608 can be a processor from Intel Corp., a processor from Advanced Micro Devices, Inc., a Reduced Instruction Set Computer (RISC), an Application-Specific Integrated Circuit (ASIC), or a combination thereof. The memory 612 can be any type of system memory such as, for example, static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), flash memory, or a combination thereof. Further, the memory 614 can include ROM for use at boot-up, and DRAM for data storage for use while executing programs.

The storage device 614, e.g., a computer readable medium, can include any type of storage device configured to store data, programs, and other information and to make the data, programs, and other information accessible via the bus. In one or more embodiments, the storage device 614 stores software instructions for the portions of the method of FIG. 2 performed by the monitoring system 106. The storage device 614 can be, for example, one or more of a hard disk drive, a magnetic disk drive, or an optical disk drive. The software instructions can be initially stored in a computer-readable medium such as a compact disc (CD), a diskette, a tape, a file, memory, or any other computer readable storage device and loaded and executed by the CPU 608. In some cases, the software instructions can also be sold in a computer program product, which includes the computer-readable medium and packaging materials for the computer-readable medium. In some cases, the software instructions can be distributed to the computer system 600 via removable computer readable media (e.g., floppy disk, optical disk, flash memory, USB key), via a transmission path from computer readable media on another computer system (e.g., a server), etc.

The video adapter 616 and the I/O interface 610 provide interfaces to couple external input and output devices to the processing unit 602. As illustrated in FIG. 6, examples of input and output devices include the display 606 coupled to the video adapter 616 and the input device 604 coupled to the I/O interface 610.

The network interface 618 allows the processing unit 602 to communicate with remote units via a network. For example, the network interface 614 allows the computer system 600 to communicate with the WSN 104 via the gateway 102. The network interface 618 can provide an interface for a wired link, such as an Ethernet cable, and/or a wireless link via, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, a cellular network, or a combination thereof.

Other Embodiments

Those having benefit of the embodiment descriptions above will appreciate that other embodiments can be devised. For example, in some embodiments, rather than determining the final repetition factors as per the pseudo code of Table 1, the final repetition factors can be determined as per the pseudo code of Table 2. This pseudo code tends to repeat the better channels more by increasing a final repetition factor by the respective initial repetition factor rather than increasing each by 1 as in the previous pseudo code. The else statement is present to ensure that the sum of the final repetition factors cannot exceed K. If the addition of the initial repetition factor to the respective final repetition factor would cause the sum of the final repetition factors to exceed K, the final repetition factor is increased only by an amount that will cause the sum of the final repetition factors to equal K. For example, assume K=16 and a channel k for an iteration has an initial repetition factor R_(f)(k)=4. If the summation of the final repetition factors for all channels is 10, then 16−10−4≥0 and R_(f)(k)=4 is added to the final repetition factor of channel k. However, if the summation of the final repetition factors for all channels is 14, then 16−14−4<0 and 16−14=2 is added to the final repetition factor of channel k.

TABLE 2 R_(f) ^(Final)(k) = R_(f)(k) k = 0 while (Σ_(j) R_(f) ^(Final) (j) < K) if (K − Σ_(j) R_(f) ^(Final) (j) − R_(f)(k) ≥ 0) R_(f) ^(Final)(k) = R_(f) ^(Final)(k) + R_(f)(k) else R_(f) ^(Final)(k) = R_(f) ^(Final)(k) + K − Σ_(j) R_(f) ^(Final) (j) k = k + 1 if (k == K) k = 0

In another example, embodiments are described herein in which the WSN is a network of sensors in an industrial application. Other application environments that may benefit from real-time determination of a channel hopping sequence based on channel statistics include home automation, medical device monitoring, temperature monitoring, and building security systems, agriculture (e.g., predicting a frost event based on sensor data) or an in-vehicular network.

In another example, embodiments are described herein in which the CQIs are sorted in descending order of performance quality and normalized. In other embodiments, the sorting is in ascending order. Further, in some embodiments, the CQIs are normalized before sorting. And, in some embodiments, no normalization is performed.

In another example, embodiments are described herein in which the set of frequency channels and the channel hopping sequence are generated by a node based on repetition factors provided by the monitoring system 106. In other embodiments, the monitoring system 106 can generate the set of frequency channels and transmit those to the node for generation of the channel hopping sequence. In other embodiments, the monitoring system 106 can generate both the set of frequency channels and the channel hopping sequence and transmit the channel hopping sequence to the node. In these other embodiments, the monitoring system 106 can generate the set of frequency channels using the ChannelIndices vector as per ChannelList=[k ₀ . . . k ₀ k ₁ . . . k ₁ . . . k _(K) _(f) . . . k _(K) _(f) ], where K_(f)={k≤K−1:R_(f) ^(final)(k)>0 and R_(f) ^(final)(K_(f)+1)=0}, i.e., K_(f) is the index of the last frequency channel with a non-zero final repetition factor. In other embodiments, the monitoring system 106 can send both the vector of final repetition factors and the ChannelIndices vector to the node and the node can use both to generate the set of frequency channels.

Modifications are possible in the described embodiments, and other embodiments are possible, within the scope of the claims. 

What is claimed is:
 1. A non-transitory computer readable medium storing instructions that are executable by a processor to cause the processor to perform a method comprising: receiving respective performance quality data for frequency channels in a link of a wireless network; determining a respective channel quality indicator (CQI) for some or all of the frequency channels based on the respective performance quality data; and determining a respective repetition factor for some or all of the frequency channels based on the respective CQI, wherein a repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence.
 2. The non-transitory computer readable medium of claim 1, wherein the instructions are executable by the processor to cause the processor to perform the method, further comprising: determining a set of the frequency channels for generation of the channel hopping sequence based on the repetition factors.
 3. The non-transitory computer readable medium of claim 2, wherein the instructions are executable by the processor to cause the processor to perform the method, further comprising: generating the channel hopping sequence using the set of the frequency channels.
 4. The non-transitory computer readable medium of claim 1, wherein determining the repetition factors includes: determining the repetition factor for a frequency channel as per ${{R_{f}(k)} = {{floor}\left( \frac{K \times {{CQI}\lbrack k\rbrack}}{\Sigma_{j}{{CQI}\lbrack j\rbrack}} \right)}},$ wherein K is a number of the frequency channels, CQI[k] is the CQI for a frequency channel k of the frequency channels, and CQI [j] is the CQI for a frequency channel j of the frequency channels, and CQI [j] is the CQI for a frequency channel j of the plurality of frequency channels.
 5. The non-transitory computer readable medium of claim 4, wherein determining the repetition factors includes: modifying repetition factors in turn in descending numerical order while a sum of the repetition factors is less than a number of frequency channels in the channel hopping sequence.
 6. The non-transitory computer readable medium of claim 5, wherein modifying the repetition factors includes adding one to a largest repetition factor.
 7. The non-transitory computer readable medium of claim 5, wherein modifying repetition factors includes adding an initial value of a largest repetition factor to the largest repetition factor.
 8. A non-transitory computer readable medium storing instructions that are executable by a processor to cause the processor to perform a method comprising: receiving respective repetition factors for frequency channels in a link of a wireless network, wherein a repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence; determining a set of the frequency channels for generation of the channel hopping sequence based on the repetition factors; and generating the channel hopping sequence using the set of the frequency channels.
 9. The non-transitory computer readable medium of claim 8, wherein the repetition factors are generated by: determining a respective channel quality indicator (CQI) for some or all of the frequency channels; and determining a respective repetition factor for some or all of the frequency channels based on the respective CQI.
 10. A wireless communication device comprising: circuitry configured to establish a link in a wireless network; a processor coupled to the circuitry; and a non-transitory computer readable medium coupled to the processor and storing instructions that are executable by the processor to cause the processor to: receive respective repetition factors for frequency channels of the link, wherein a repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence; determine a set of frequency channels for generation of the channel hopping sequence based on the repetition factors; and generate the channel hopping sequence using the set of frequency channels.
 11. The wireless communication device of claim 10, wherein a repetition factor for a frequency channel is determined based on a channel quality indicator (CQI) computed for the frequency channel.
 12. The wireless communication device of claim 10, wherein the repetition factors are determined by a monitoring system coupled to the wireless sensor network.
 13. A monitoring system comprising: a network interface; a processor coupled to the network interface; and a non-transitory computer readable medium coupled to the processor and storing instructions that are executable by the processor to cause the processor to: receive, via the network interface, respective performance quality data for frequency channels in a link in a wireless network; determine a respective channel quality indicator (CQI) for some or all of the frequency channels based on the respective performance data; and determine a respective repetition factor for some or all of the frequency channels based on the respective CQI, wherein a repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence for the link.
 14. The monitoring system of claim 13, wherein the instructions that cause the processor to determine a repetition factor include instructions that cause the processor to: determine the repetition factor for a frequency channel as per ${{R_{f}(k)} = {{floor}\left( \frac{K \times {{CQI}\lbrack k\rbrack}}{\Sigma_{j}{{CQI}\lbrack j\rbrack}} \right)}},$ wherein K is a number of the frequency channels, CQI[k] is the CQI for a frequency channel k of the frequency channels, and CQI [j] is the CQI for a frequency channel j of the frequency channels, and CQI [j] is the CQI for a frequency channel j of the plurality of frequency channels.
 15. The monitoring system of claim 14, wherein the instructions that cause the processor to determine the repetition factors include instructions that cause the processor to: modify the repetition factors in turn in descending numerical order while a sum of the repetition factors is less than a number of frequency channels in the channel hopping sequence.
 16. The monitoring system of claim 15, wherein the instructions that cause the processor to modify the repetition factors include instructions that cause the processor to add one to a largest repetition factor.
 17. The monitoring system of claim 15, wherein the instructions that cause the processor to modify the repetition factors include instructions that cause the processor to add an initial value of a largest repetition factor to the largest repetition factor.
 18. A network comprising: a wireless sensor network, including wireless communication devices configured to operate according to a channel hopping sequence; and a monitoring system including: a network interface configured to couple to the wireless sensor network; a processor coupled to the network interface; and a non-transitory computer readable medium coupled to the processor and storing instructions that are executable by the processor to cause the processor to: receive, via the network interface, respective performance quality data for frequency channels in a link used by one or more of the wireless communication devices; determine a respective channel quality indicator (CQI) for some or all of the frequency channels based on the respective performance quality data; and determine a respective repetition factor for some or all of the frequency channels based on the respective CQI, wherein a repetition factor for a frequency channel indicates a number of times the frequency channel is repeated in a channel hopping sequence for the link.
 19. The network of claim 18, wherein the repetition factors are used to determine a set of the frequency channels for generation of the channel hopping sequence, and the set of the frequency channels is used to generate the channel hopping sequence. 